package com.hzhc.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzhc.entity.TrainPlanDetail;
import com.hzhc.utils.ResultUtil;
import com.hzhc.vo.*;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 班列下集装箱详情 服务类
 * </p>
 *
 * @author 1
 * @since 2024-05-30
 */
public interface TrainPlanDetailService extends IService<TrainPlanDetail> {

    ResultUtil<T> saveDetailMsg(TrainPlanDetail vo);

    List<TrainPlanDetailVo> getTrainPlanDetailList(TrainPlanDetailVo vo);

    Integer checkDetailExist(Long id);

    List<TrainPlanDetailVo> getAllTrainPlanDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<T> carTally(TrainPlanDetailVo vo);

    ResultUtil<List<TrainPlanDetailVo>> cntrUploadCheck(MultipartFile file);

    ResultUtil<T> saveTrainPlanDetailList(Integer planId, List<TrainPlanDetail> list);

    Integer getCountZxcTallyNumber(String ywCode);

    List<TrainPlanDetail> getXcCntrList(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<T> addDetailRet(TrainPlanDetail detail);

    ResultUtil<T> updateDetailById(TrainPlanDetail detail);

    ResultUtil<T> delBatchDetailRet(TrainPlanVo vo);

    List<CompanyInfoVo> getXcTrainPlanDetailCompanyList( TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getXcDataPoolList(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<T> importXcTrainPlanCntr(HttpServletRequest request, List<TrainPlanDetail> list);

    ResultUtil<T> deleteDetail(HttpServletRequest request, CntrLogVo vo);

    ResultUtil<T> deleteXcCntr(Long id);

    ResultUtil<T> updatePoolCntrMsg(TrainPlanDetail detail);

    List<TrainPlanDetailVo> getZzTrainPlanDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getZtTrainPlanDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getXcTrainPlanDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<T> carTallyDzg(TrainPlanDetailVo vo);

    ResultUtil<T> saveDetailMsgOne(TrainPlanDetail detail);

    ResultUtil<T> addXcData(TrainPlanDetailVo vo);

    ResultUtil<T> updateConsigneeMsg(TrainPlanDetailVo vo);

    void exportTrainPlanDetailReport(TrainPlanDetailVo vo, HttpServletRequest request, HttpServletResponse response);

    List<TrainPlanDetailVo> getTrainPlanDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getTrainPlanDetail( TrainPlanDetailVo vo);

    ResultUtil<T> deleteCntrOrderMsg(TrainPlanDetailVo vo);

    ResultUtil<T> zcUpdateCarNo(TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getZcAndXcDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getDdCntrPush(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<T> updateConsignee(DdPushCntrVo vo);

    List<TrainPlanDetailVo> getDdCntrDetail(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    void exportZxDetail(HttpServletRequest request, HttpServletResponse response, TrainPlanDetailVo vo);

    ResultUtil<T> updateCntrWg(TrainPlanDetailVo vo);

    ResultUtil<T> retractRet(TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getZtTrainPlanDetailOne(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    List<TrainPlanDetailVo> getPadList1(Page<TrainPlanDetailVo> page, TrainPlanDetailVo vo);

    ResultUtil<List<TrainPlanDetailVo>> zcCntrUploadCheck(MultipartFile file);

    ResultUtil<T> importZcCntr(HttpServletRequest request,TrainPlanVo vo);
}
